Dynamic Query-Based Debugging
نویسندگان
چکیده
Program errors are hard to find because of the cause-effect gap between the time when an error occurs and the time when the error becomes apparent to the programmer. Although debugging techniques such as conditional and data breakpoints help to find error causes in simple cases, they fail to effectively bridge the cause-effect gap in many situations. Dynamic query-based debuggers offer programmers an effective tool that provides instant error alert by continuously checking inter-object relationships while the debugged program is running. To speed up dynamic query evaluation, our debugger (implemented in portable Java) uses a combination of program instrumentation, load-time code generation, query optimization, and incremental reevaluation. Experiments and a query cost model show that selection queries are efficient in most cases, while more costly join queries are practical when query evaluations are infrequent or query domains are small.
منابع مشابه
On-the-fly query-based debugging with examples
Program errors are hard to find because of the cause-effect gap between the time when an error occurs and the time when the error becomes apparent to the programmer. Although debugging techniques such as conditional and data breakpoints help to find error causes in simple cases, they fail to effectively bridge the cause-effect gap in many situations. Query-based debuggers offer programmers an e...
متن کاملTemporal Data Model for Program Debugging
We present a novel approach to program debugging and dynamic program analysis based on a temporal data model and query language. The data model exposes a point-based view of executions, while the underlying data is represented using intervals, for efficiency reasons. The point-based query language supports selection, projection, joins, grouping/aggregation, and recursion on both data and tempor...
متن کاملTowards a Usable Query-based Debugger
Query-based debuggers enable programmers to analyse objects on the heap during runtime, through the evaluation of queries. This is useful for debugging large object oriented programs. Existing query-based debuggers have had very little focus on the usability of these systems; likewise, there has been very little uptake of the use of these debugging tools. We propose a prototype based on the Usa...
متن کاملSystematic Debugging of Attribute Grammars
Although attribute grammars are commonly used for compiler construction, little investigation has been conducted on debugging attribute grammars. The paper proposes two types of systematic debugging methods, an algorithmic debugging and slice-based debugging, both tailored for attribute grammars. By means of query-based interaction with the developer, our debugging methods effectively narrow th...
متن کاملA Theoretical Framework for the Declarative Debugging of Datalog Programs
The logic programming language Datalog has been extensively researched as a query language for deductive databases. Although similar to Prolog, the Datalog operational mechanisms are more intricate, leading to computations quite hard to debug by traditional approaches. In this paper, we present a theoretical framework for debugging Datalog programs based on the ideas of declarative debugging. I...
متن کامل